home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs47.d81 / 64alv2a.sfx / lynx dissolve (.txt) < prev   
Commodore BASIC  |  1990-02-12  |  6KB  |  268 lines

  1. 1 POKE 53280,11:POKE 53281,12:PRINT "[147]";CHR$(142)
  2. 2 PRINT TAB(12) "[151]LYNX DECOMPILER"
  3. 3 PRINT TAB(12) "[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
  4. 4 PRINT TAB(9) "(C) 1989 WILL CORLEY"
  5. 5 DIM S$(5),T$(145),PN$(145),FT(145),FS(145),BL(145),LN(145)
  6. 6 DIM RT(145),RL(145),RS(145),LT(145),LS(145),ZT(145),ZS(145)
  7. 7 DIM BT(6,120),BS(6,120),TS(6),SS(6)
  8. 8 K$=CHR$(0)
  9. 9 SD$=" 8=SOURCE DRIVE":SD=VAL(SD$)
  10. 10 BA=193*256:TEM=49152
  11. 11 FOR X=0 TO 40:READ Y:POKE X+TEM,Y:NEXT X
  12. 12 HD$="":FOR X=1 TO 94:READ Y:HD$=HD$+CHR$(Y):NEXT X
  13. 13 INPUT "INSERT DISK";A$
  14. 14 OPEN 15,SD,15,"I0":GOSUB 229
  15. 15 OPEN 2,SD,2,"#":GOSUB 229
  16. 16 T=18:S=1:N=0:BT=N:W=N
  17. 17 PRINT "[145][Y[146]][151]ES [N[146]][151]O [A[146]][151]UTO [G[146]][151]O [E[146]][151]XIT"
  18. 18 GOSUB 176:X=0
  19. 19 ZX=X*32:F$="":C=PEEK(BA+2+ZX)
  20. 20 IF (C AND 128)<> 128 THEN 41
  21. 21 C=(C AND 15):IF C=0 THEN 41
  22. 22 IF (C=3 OR C=4) THEN 41
  23. 23 GOSUB 179
  24. 24 DT=PEEK(BA+3+ZX):DS=PEEK(BA+4+ZX)
  25. 25 GOSUB 184
  26. 26 Y=1
  27. 27 IF MID$(F$,Y,4)=".LNX" THEN 30
  28. 28 Y=Y+1:IF Y>13 THEN 41
  29. 29 GOTO 27
  30. 30 GOSUB 187
  31. 31 POKE 212,1:PRINT F$:POKE 212,0
  32. 32 PRINT "[145]";TAB(17) T$
  33. 33 IF W=1 THEN A$="Y":GOTO 35
  34. 34 POKE 198,0:WAIT 198,1:GET A$
  35. 35 IF A$="Y" THEN X=8:T=0
  36. 36 IF A$="G" THEN PRINT "[145][145]":GOTO 43
  37. 37 IF A$="A" THEN W=1:GOTO 33
  38. 38 IF A$="E" THEN CLOSE 2:CLOSE 15:END
  39. 39 IF A$<>"Y" THEN PRINT "[145][145]":GOTO 41
  40. 40 GOSUB 189
  41. 41 X=X+1:IF X<8 THEN 19
  42. 42 IF T<>0 THEN 18
  43. 43 CLOSE 2:CLOSE 15
  44. 44 PRINT "                    "
  45. 45 OPEN 15,SD,15,"UJ"
  46. 46 TI$="000000":WAIT 162,128
  47. 47 GET#15,A$:IF ST<>64 THEN 47
  48. 48 CLOSE 15
  49. 49 IF N=0 THEN END
  50. 50 GETA$:IF A$="E" THEN END
  51. 51 BL(N+1)=0
  52. 52 GOSUB 247:OPEN 15,SD,15,"I0":GOSUB 229
  53. 53 OPEN 2,SD,2,"0:"+PN$(1)+","+T$(1)+",R"
  54. 54 GOSUB 229
  55. 55 PRINT "READING HEADER"
  56. 56 BL=BL(1):B$=""
  57. 57 IF ZR=0 THEN 60
  58. 58 GET#2,A$:A$=CHR$(ASC(A$+K$)):IF A$<>CHR$(13) THEN B$=B$+A$:GOTO 58
  59. 59 IF B$<>HD$ THEN 244
  60. 60 GOSUB 239:BL(1)=VAL(A$):BV=VAL(A$)
  61. 61 INPUT#2,N:N=N+1
  62. 62 FOR X=2 TO N
  63. 63 PN$(X)="":Y=1
  64. 64 GET#2,D$:IF ASC(D$)=13 THEN 66
  65. 65 PN$(X)=PN$(X)+D$:Y=Y+1:IF Y<18 THEN 64
  66. 66 INPUT#2,BL(X):BV=BV+BL(X):INPUT#2,T$(X)
  67. 67 IF T$(X)="R" THEN INPUT#2,RL(X)
  68. 68 IF (RZ=0 AND X=N) THEN 70
  69. 69 INPUT#2,LN(X)
  70. 70 NEXT X
  71. 71 GOSUB 229:CLOSE 2:CLOSE 15
  72. 72 IF BV=BL OR BV=BL-1 THEN 74
  73. 73 GOTO 226
  74. 74 PRINT
  75. 75 OPEN 15,SD,15,"I0":GOSUB 229:OPEN 2,SD,2,"#":GOSUB 229
  76. 76 T=FT(1):S=FS(1)
  77. 77 FOR Z=1 TO N:PRINT "UNLINKING "PN$(Z)
  78. 78 IF BL(Z)=0 THEN 93
  79. 79 IF T$(Z)="R" THEN 128
  80. 80 IF (Z=N AND RZ=0) THEN 93
  81. 81 FOR X=1 TO BL(Z)
  82. 82 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0
  83. 83 T1=T:S1=S
  84. 84 GET#2,D$:T=ASC(D$+K$)
  85. 85 GET#2,D$:S=ASC(D$+K$)
  86. 86 NEXT X
  87. 87 Y=Z+1
  88. 88 IF BL(Y)<>0 THEN FT(Y)=T:FS(Y)=S:GOTO 90
  89. 89 Y=Y+1:IF Y<N+1 THEN 88
  90. 90 PRINT#15,"B-P";2;0
  91. 91 PRINT#2,K$;CHR$(LN(Z));
  92. 92 PRINT#15,"U2";2;0;T1;S1:GOSUB 229
  93. 93 NEXT Z
  94. 94 CLOSE2:PRINT#15,"I0":GOSUB 229:PRINT#15,"S0:"+PN$(1)
  95. 95 GOSUB 229:PRINT#15,"I0":GOSUB 229:OPEN 2,SD,2,"#":GOSUB 229
  96. 96 PRINT "WRITING DIRECTORY"
  97. 97 T=18:S=1:BT=0
  98. 98 GOSUB 176
  99. 99 FOR X=0 TO 7:ZX=X*32:F$="":C=PEEK(BA+2+ZX)
  100. 100 IF (C AND 128)<> 128 THEN 107
  101. 101 C=(C AND 15):IF C=0 THEN 107
  102. 102 GOSUB 179
  103. 103 DT=PEEK(BA+3+ZX):DS=PEEK(BA+4+ZX)
  104. 104 GOSUB 184
  105. 105 GOSUB 187
  106. 106 GOSUB 189
  107. 107 NEXT X
  108. 108 IF T<>0 THEN 98
  109. 109 Z=2
  110. 110 C$=K$+K$+K$+K$+K$+K$:ND=1
  111. 111 A$=""
  112. 112 FOR X=0 TO 7
  113. 113 IF BL(Z)=0 THEN FT(Z)=18:FS(Z)=1
  114. 114 IF T$(Z)="S" THEN D=129
  115. 115 IF T$(Z)="P" THEN D=130
  116. 116 IF T$(Z)="U" THEN D=131
  117. 117 IF T$(Z)="R" THEN D=132
  118. 118 A$=A$+CHR$(D)+CHR$(FT(Z))+CHR$(FS(Z))+PN$(Z)
  119. 119 GOSUB 200
  120. 120 IF T$(Z)="R" THEN B$=CHR$(RT(Z))+CHR$(RS(Z))+CHR$(RL(Z))
  121. 121 GOSUB 207
  122. 122 IF Z>N THEN 124
  123. 123 NEXT X
  124. 124 GOSUB 213
  125. 125 IF Z>N THEN CLOSE 2:GOTO 127
  126. 126 GOTO 111
  127. 127 CLOSE 15:END
  128. 128 GOSUB 233:RT(Z)=T:RS(Z)=S
  129. 129 FOR X=1 TO SS:TS(X)=T:SS(X)=S
  130. 130 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0
  131. 131 T1=T:S1=S
  132. 132 GET#2,D$:T=ASC(D$+K$)
  133. 133 GET#2,D$:S=ASC(D$+K$)
  134. 134 NEXT X
  135. 135 FT(Z)=T:FS(Z)=S
  136. 136 PRINT#15,"B-P";2;0
  137. 137 PRINT#2,K$;K$;
  138. 138 PRINT#15,"U2";2;0;T1;S1:GOSUB 229
  139. 139 RR=1
  140. 140 SN=1
  141. 141 FOR X=1 TO BL(Z)-SS
  142. 142 BT(SN,RR)=T:BS(SN,RR)=S
  143. 143 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0
  144. 144 T1=T:S1=S
  145. 145 GET#2,D$:T=ASC(D$+K$)
  146. 146 GET#2,D$:S=ASC(D$+K$)
  147. 147 RR=RR+1:IF RR>120 THEN SN=SN+1:RR=1
  148. 148 NEXT X
  149. 149 RR=RR-1:IF RR=0 THEN RR=120
  150. 150 Y=Z+1
  151. 151 IF BL(Y)<>0 THEN 154
  152. 152 Y=Y+1:IF Y<N+1 THEN 151
  153. 153 GOTO 155
  154. 154 FT(Y)=T:FS(Y)=S
  155. 155 PRINT#15,"B-P";2;0
  156. 156 PRINT#2,K$;CHR$(LN(Z));
  157. 157 PRINT#15,"U2";2;0;T1;S1:GOSUB 229
  158. 158 ZZ$=""
  159. 159 FOR X=1 TO 6:ZZ$=ZZ$+CHR$(TS(X))+CHR$(SS(X)):NEXT X
  160. 160 FOR X=1 TO SS
  161. 161 A$=CHR$(X-1)+CHR$(RL(Z))+ZZ$
  162. 162 FOR XZ=1 TO 120:A$=A$+CHR$(BT(X,XZ))+CHR$(BS(X,XZ)):NEXT XZ
  163. 163 PRINT#15,"U1";2;0;TS(X);SS(X):GOSUB 229
  164. 164 P=2:IF X=SS THEN A$=CHR$(RR*2+15)+A$:P=1
  165. 165 PRINT#15,"B-P";2;P
  166. 166 PRINT#2,A$;
  167. 167 PRINT#15,"U2";2;0;TS(X);SS(X):GOSUB 229
  168. 168 NEXT X
  169. 169 FOR X=1 TO SS:TS(X)=0:SS(X)=0
  170. 170 FOR XZ=1 TO 120:BT(X,XZ)=0:BS(X,XZ)=0
  171. 171 NEXT XZ,X
  172. 172 Y=Z+1
  173. 173 IF BL(Y)<>0 THEN T=FT(Y):S=FS(Y):GOTO 93
  174. 174 Y=Y+1:IF Y<N+1 THEN 173
  175. 175 GOTO 93
  176. 176 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0:GOSUB 229
  177. 177 POKE 251,0:POKE 252,193:SYSTEM:T=PEEK(BA):S=PEEK(BA+1):RETURN
  178. 178 IF C=0 THEN T$="DEL"
  179. 179 IF C=1 THEN T$="SEQ"
  180. 180 IF C=2 THEN T$="PRG"
  181. 181 IF C=3 THEN T$="USR"
  182. 182 IF C=4 THEN T$="REL"
  183. 183 RETURN
  184. 184 FOR Y=BA+5+ZX TO BA+20+ZX
  185. 185 D$=CHR$(PEEK(Y))
  186. 186 F$=F$+D$:NEXT Y:RETURN
  187. 187 H=PEEK(BA+31+ZX)*256+PEEK(BA+30+ZX)
  188. 188 RT=PEEK(BA+21+ZX):RS=PEEK(BA+22+ZX):RL=PEEK(BA+23+ZX):RETURN
  189. 189 N=N+1
  190. 190 PN$(N)=F$
  191. 191 FT(N)=DT
  192. 192 FS(N)=DS
  193. 193 BL(N)=H
  194. 194 BT=BT+H
  195. 195 T$(N)=LEFT$(T$,1)
  196. 196 RT(N)=RT
  197. 197 RS(N)=RS
  198. 198 RL(N)=RL
  199. 199 RETURN
  200. 200 D=16-LEN(PN$(Z))
  201. 201 IF D=0 THEN 205
  202. 202 FOR Y=1 TO D
  203. 203 A$=A$+CHR$(160)
  204. 204 NEXT Y
  205. 205 B$=LEFT$(C$,3)
  206. 206 RETURN
  207. 207 A$=A$+B$+C$
  208. 208 H=INT(BL(Z)/256)
  209. 209 L=BL(Z)-(H*256)
  210. 210 A$=A$+CHR$(L)+CHR$(H)
  211. 211 IF X<>7 THEN A$=A$+K$+K$
  212. 212 Z=Z+1:RETURN
  213. 213 IF LEN(A$)<254 THEN A$=A$+K$:GOTO 213
  214. 214 S=ND
  215. 215 ND=ND+3
  216. 216 IF ND>18 THEN ND=ND-17
  217. 217 PRINT#15,"B-P";2;0
  218. 218 IF Z>N THEN PRINT#2,K$;CHR$(255);:GOTO 220
  219. 219 PRINT#2,CHR$(18);CHR$(ND);
  220. 220 PRINT#2,A$;
  221. 221 PRINT#15,"U2";2;0;18;S:GOSUB 229
  222. 222 RETURN
  223. 223 PRINT#15,"U1";2;0;T;S:GOSUB 229
  224. 224 PRINT#15,"B-P";2;0:GOSUB 229
  225. 225 RETURN
  226. 226 PRINT "FILE LENGTH ERROR"
  227. 227 CLOSE 2:CLOSE 15
  228. 228 POKE 198,0:WAIT 198,1:END
  229. 229 INPUT#15,E,E$,ET,ES:IF E>19 THEN CLOSE 2:CLOSE 3:GOTO 231
  230. 230 RETURN
  231. 231 PRINT E;E$;ET;ES
  232. 232 END
  233. 233 IF BL(Z)<122 THEN SS=1:RETURN
  234. 234 IF BL(Z)<243 THEN SS=2:RETURN
  235. 235 IF BL(Z)<364 THEN SS=3:RETURN
  236. 236 IF BL(Z)<485 THEN SS=4:RETURN
  237. 237 IF BL(Z)<606 THEN SS=5:RETURN
  238. 238 SS=6:RETURN
  239. 239 A$="":FOR X=1 TO 28:GET#2,B$:A$=A$+B$:NEXT:GET#2,B$
  240. 240 B$="*LYNX":X=1:RZ=0
  241. 241 IF MID$(A$,X,5)=B$ THEN RZ=1:RETURN
  242. 242 IF MID$(A$,X,4)="LYNX"  THEN RETURN
  243. 243 X=X+1:IF X<22 THEN 241
  244. 244 CLOSE 2:CLOSE 15
  245. 245 PRINT "NOT A LYNXED FILE"
  246. 246 POKE 198,0:WAIT 198,1:END
  247. 247 OPEN 15,SD,15,"I0":GOSUB 229
  248. 248 OPEN 2,SD,2,"0:"+PN$(1)+","+T$(1)+",R":GOSUB 229
  249. 249 GET#2,A$:A=ASC(A$+K$)
  250. 250 GET#2,A$:B=ASC(A$+K$)
  251. 251 ZR=0:IF (A=1 AND B=8) THEN ZR=1
  252. 252 CLOSE 2:CLOSE 15:RETURN
  253. 253 DATA 162,2,32,198,255,160,0,32,228,255
  254. 254 DATA 145,251,200,208,248,32,204,255,96,162
  255. 255 DATA 2,32,198,255,162,25,160,0,32,228
  256. 256 DATA 255,145,251,200,202,208,247,32,204,255
  257. 257 DATA 96
  258. 258 DATA 1,8,91,8,10,0,151,53,51,50
  259. 259 DATA 56,48,44,48,58,151,53,51,50,56
  260. 260 DATA 49,44,48,58,151,54,52,54,44,194
  261. 261 DATA 40,49,54,50,41,58,153,34,147,17
  262. 262 DATA 17,17,17,17,17,17,17,34,58,153
  263. 263 DATA 34,32,32,32,32,32,85,83,69,32
  264. 264 DATA 76,89,78,88,32,84,79,32,68,73
  265. 265 DATA 83,83,79,76,86,69,32,84,72,73
  266. 266 DATA 83,32,70,73,76,69,34,58,137,49
  267. 267 DATA 48,0,0,0
  268.